Use gdk_cairo_surface_create_from_pixbuf when possible
authorAlexander Larsson <alexl@redhat.com>
Mon, 24 Jun 2013 10:53:53 +0000 (12:53 +0200)
committerAlexander Larsson <alexl@redhat.com>
Wed, 3 Jul 2013 12:39:25 +0000 (14:39 +0200)
gtk/gtkcssimagesurface.c
gtk/gtkcssstylefuncs.c
gtk/gtknumerableicon.c

index 8f2e612d1edf9a61892b4458e13fd5d34868c123..ac812ddcb0fb932664829f27393690867c90bdfa 100644 (file)
@@ -142,20 +142,12 @@ _gtk_css_image_surface_new_for_pixbuf (GdkPixbuf *pixbuf)
 {
   GtkCssImage *image;
   cairo_surface_t *surface;
-  cairo_t *cr;
 
   g_return_val_if_fail (GDK_IS_PIXBUF (pixbuf), NULL);
 
-  surface = cairo_image_surface_create (CAIRO_FORMAT_ARGB32,
-                                        gdk_pixbuf_get_width (pixbuf),
-                                        gdk_pixbuf_get_height (pixbuf));
-  cr = cairo_create (surface);
-  gdk_cairo_set_source_pixbuf (cr, pixbuf, 0, 0);
-  cairo_paint (cr);
-  cairo_destroy (cr);
+  surface = gdk_cairo_surface_create_from_pixbuf (pixbuf, 1, NULL);
 
   image = _gtk_css_image_surface_new (surface);
-
   cairo_surface_destroy (surface);
 
   return image;
index b6fefcab7350d4ca62921f16d9a3c33b504d7805..3a5e10c5a237119a839f82b79cedb84dd17852f9 100644 (file)
@@ -766,7 +766,6 @@ pattern_value_parse (GtkCssParser *parser,
       GFile *file;
       cairo_surface_t *surface;
       cairo_pattern_t *pattern;
-      cairo_t *cr;
       cairo_matrix_t matrix;
 
       file = _gtk_css_parser_read_url (parser);
@@ -784,21 +783,15 @@ pattern_value_parse (GtkCssParser *parser,
           return FALSE;
         }
 
-      surface = cairo_image_surface_create (CAIRO_FORMAT_ARGB32,
-                                            gdk_pixbuf_get_width (pixbuf),
-                                            gdk_pixbuf_get_height (pixbuf));
-      cr = cairo_create (surface);
-      gdk_cairo_set_source_pixbuf (cr, pixbuf, 0, 0);
-      cairo_paint (cr);
+      surface = gdk_cairo_surface_create_from_pixbuf (pixbuf, 1, NULL);
       pattern = cairo_pattern_create_for_surface (surface);
+      cairo_surface_destroy (surface);
 
       cairo_matrix_init_scale (&matrix,
                                gdk_pixbuf_get_width (pixbuf),
                                gdk_pixbuf_get_height (pixbuf));
       cairo_pattern_set_matrix (pattern, &matrix);
 
-      cairo_surface_destroy (surface);
-      cairo_destroy (cr);
       g_object_unref (pixbuf);
 
       g_value_take_boxed (value, pattern);
index e46547174a6e0b722ad00fd532d38af7ec6b02b7..1d5768f11f38ab2b41346b42c912b2ebb86827c9 100644 (file)
@@ -196,7 +196,6 @@ draw_from_gicon (GtkNumerableIcon *self)
   GtkIconInfo *info;
   GdkPixbuf *pixbuf;
   cairo_surface_t *surface;
-  cairo_t *cr;
 
   if (self->priv->style != NULL)
     {
@@ -220,16 +219,7 @@ draw_from_gicon (GtkNumerableIcon *self)
   if (pixbuf == NULL)
     return NULL;
 
-  surface = cairo_image_surface_create (CAIRO_FORMAT_ARGB32,
-                                        gdk_pixbuf_get_width (pixbuf),
-                                        gdk_pixbuf_get_height (pixbuf));
-
-  cr = cairo_create (surface);
-
-  gdk_cairo_set_source_pixbuf (cr, pixbuf, 0, 0);
-  cairo_paint (cr);
-
-  cairo_destroy (cr);
+  surface = gdk_cairo_surface_create_from_pixbuf (pixbuf, 1, NULL);
   g_object_unref (pixbuf);
 
   return surface;